function bookHotel(city) {
    //在bookHotel()函数中定义 function scope
    //只能在函数范围中使用
    var availableHotel = 'None';

    for(var i = 0; i < hotels.length; i++) {
        var hotel = hotels[i];
        
        if(hotel.city === city === hotel.hasRoom) {
            availableHotel = hotel.name;
            break;
        }
    }

    //因为使用var定义变量
    //i和hotel在这里仍然可以访问
    console.log('Checked ' + (i+1) + 'hotels');  // Checked 2 hotels
    console.log('Last checked ' + hotel.name);   // Last checked Hotel B

    {
        //当一个函数嵌套在另一个函数中时，就会形成闭包(closure)。
        //无论将函数嵌套得有多深，它仍然可以访问其父函数的作用域，
        //并一直到顶部作用域，即全局作用域。
        function placeOrder() {
            var totalAmount = 200;
            console.log('Order placed to ' + availableHotel)
        }
    }

    placeOrder();

    return availableHotel;
}

//hotels数组
//全局global scope 可以在任何地方访问 比如在bookHotel(函数中)
var hotels = [
    {name: 'Hotel A', hasRoom: false, city: 'Sanya'},
    {name: 'Hotel B', hasRoom: true, city: 'Sanya'}
];

console.log(bookHotel('Sanya')); // Hotel B

//下面的不能访问
console.log(availableHotel);  //ReferenceError: availableHotel is not defined